
/**
 * 时间格式化
 * 
 * @param {Object} timestamp
 */
export function formatWeChatTime(timestamp) {
    const now = Date.now();
    const diff = now - timestamp;

    // 刚刚（1分钟内）
    if (diff < 60000) {
        return '刚刚';
    }

    // 分钟级（1小时以内）
    if (diff < 3600000) {
        const minutes = Math.floor(diff / 60000);
        return `${minutes}分钟前`;
    }

    // 小时级（24小时以内）
    if (diff < 86400000) {
        const hours = Math.floor(diff / 3600000);
        return `${hours}小时前`;
    }

    // 超过24小时显示具体日期
    const date = new Date(timestamp);
    const currentYear = new Date().getFullYear();
    const options = { 
        month: '2-digit', 
        day: '2-digit',
        // 跨年时显示年份
        ...(date.getFullYear() !== currentYear && { year: 'numeric' })
    };

    // 格式化为中文日期并替换斜杠
    return date.toLocaleDateString('zh-CN', options).replace(/\//g, '-');
}

/**
 * 分钟数转小时/分钟格式
 */
export function formatMinutes(minutes) {
    const hours = Math.floor(minutes / 60);
    const remainingMinutes = minutes % 60;
    
    const parts = [];
    if (hours > 0) {
        parts.push(`${hours}小时`);
    }
    if (remainingMinutes > 0 || minutes === 0) {
        parts.push(`${remainingMinutes}分钟`);
    }
    
    return parts.join('');
}

/**
 * 时间戳格式化工具
 * @param {number} timestamp - 时间戳（支持10位秒级/13位毫秒级）
 * @returns {{date: string, time: string}} 包含格式化日期和时间的对象
 */
export function formatTimestamp(timestamp) {
    // 处理毫秒级时间戳
    const ts = timestamp.toString().length === 10 ? timestamp * 1000 : timestamp;
    const date = new Date(ts);
    
    // 格式化日期部分
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    
    // 格式化时间部分
    const hours = date.getHours().toString().padStart(2, '0');
    const minutes = date.getMinutes().toString().padStart(2, '0');
    const seconds = date.getSeconds().toString().padStart(2, '0');
    
    return {
        date: `${year}-${month}-${day}`,
        time: `${hours}:${minutes}:${seconds}`
    };
}

/**
 * 解析url参数
 * 
 * @param {Object} url
 */
export function getOrderAndNumber(url) {
	// 提取参数部分（即 ? 后面的内容）
	let queryString = '';
	const questionMarkIndex = url.indexOf('?');
	if (questionMarkIndex !== -1) {
		queryString = url.substring(questionMarkIndex + 1);
	}

	// 将参数字符串拆分成对象
	let params = {};
	queryString.split('&').forEach(param => {
		const [key, value] = param.split('=');
		if (key) {
			params[decodeURIComponent(key)] = decodeURIComponent(value || '');
		}
	});

	const noValue = params['No'];
	if (noValue && noValue.length === 16) {
		return {
			terminalId: noValue.slice(0, 14),
			gunCode: noValue.slice(14, 16)
		};
	} else {
		return null;
	}
}

/**
 * 检测传入的值是否为空
 * 
 * @param {Object} value
 */
export function isEmpty(value) {
	// 检查 undefined 或 null
	if (value == null) return true;

	// 检查空字符串
	if (value === '' || value === 'undefined') return true;

	// 检查字符串中是否只包含空格
	if (typeof value === 'string' && !value.trim()) return true;

	// 检查空对象
	if (typeof value === 'object') {
		return Object.keys(value).length === 0;
	}
	return false;
}

export function formatNewTimestamp(timestamp) {
  // 处理 iOS 平台的特殊情况（时间戳需要是数字类型）
  const safeTimestamp = typeof timestamp === 'string' 
    ? parseInt(timestamp, 10)
    : timestamp;
  
  // 创建 Date 对象 - 兼容 iOS 的格式要求
  const date = new Date(safeTimestamp);
  
  // 验证日期有效性（iOS 对无效日期更敏感）
  if (isNaN(date.getTime())) {
    console.error('Invalid timestamp:', timestamp);
    return 'Invalid Date';
  }
  
  // 使用 UTC 方法避免时区差异问题
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  const seconds = String(date.getSeconds()).padStart(2, '0');
  
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}